package com.cs.deviceManager.service;

import java.util.List;
import com.cs.deviceManager.domain.DevDevice;

/**
 * 设备信息Service接口
 * 
 * @author zizige
 * @date 2025-06-30
 */
public interface IDevDeviceService 
{
    /**
     * 查询设备信息
     * 
     * @param devId 设备信息主键
     * @return 设备信息
     */
    DevDevice selectDevDeviceByDevId(Long devId);

    /**
     * 查询设备信息列表
     * 
     * @param devDevice 设备信息
     * @return 设备信息集合
     */
    List<DevDevice> selectDevDeviceList(DevDevice devDevice);

    /**
     * 新增设备信息
     * 
     * @param devDevice 设备信息
     * @return 结果
     */
    int insertDevDevice(DevDevice devDevice);

    /**
     * 修改设备信息
     * 
     * @param devDevice 设备信息
     * @return 结果
     */
    int updateDevDevice(DevDevice devDevice);

    /**
     * 查询所有未绑定的设备，即经纬度为空的设备
     * @return 未绑定的设备列表
     */
    List<DevDevice> selectUnboundDevices();

    /**
     * 批量删除设备信息
     * 
     * @param devIds 需要删除的设备信息主键集合
     * @return 结果
     */
    int deleteDevDeviceByDevIds(String devIds);

    /**
     * 删除设备信息信息
     * 
     * @param devId 设备信息主键
     * @return 结果
     */
    int deleteDevDeviceByDevId(Long devId);

    /**
     * 查询指定经纬度附近1KM内的设备
     * 
     * @param latitude 纬度
     * @param longitude 经度
     * @return 设备列表
     */
    List<DevDevice> selectNearbyDevices(java.math.BigDecimal latitude, java.math.BigDecimal longitude);

    /**
     * 解除设备绑定，清空设备经纬度
     * 
     * @param devId 设备ID
     * @return 影响行数
     */
    int unbindDevice(Long devId);

    void updateStatus(String devNumber, boolean isOnline);
    
    /**
     * 查询可用设备列表
     * @return 可用设备列表
     */
    List<DevDevice> selectActiveDevices();
}
